//该JS主要负责注销贮存在内存中的无用对象，从而释放内存

var reclaim = reclaim || {};
(function(reclaim){
	function start(){
		var isLoop = reclaim.defaults.isLoop;
		if(isLoop){
			var timer = reclaim.defaults.timer;
			var interval = reclaim.defaults._interval;
			timer = setInterval(function(){
				free();
			},interval);
		}
		else{
			free();
		}
	}
	function free(){
		var targets = reclaim.defaults._targets[i];
		var degree = reclaim.defaults.degree;
		var len = targets.length;
		for(var i=0;i<len;i++){
			var target = targets[i];
			if(degree==0){
				(function(target){
					for(var j in target){
						if(j instanceof Function){
							clear(j);
						}
					}
				})(target);
			}
			else if(degree == 1){
				(function(target){
					for(var j in target){
						if(j instanceof Function){
							clear(j);
						}
					}
				})(target);				
			}
			else if(degree == 2){
				
			}
		}
	}
	function clear(obj){
		for(var i in obj){
			if(typeof i=='object'||i.constructor == Array){
				i = null;
			}
		}
	}
	function extend(parent,child){
		for(var i in parent){
			if(typeof parent[i] != 'object'){
				child[i] = parent[i];	
			}	
			else if(parent[i].constructor == Array){
				child[i] = 	Object.clone(parent[i]);
			}
			else{
				child[i] = child[i] || {};
				extend(parent[i],child[i]);
			}
		}
	}
	function init(option){
		var opt = reclaim.defaults;
		extend(option,opt);
	}
	reclaim.start = function(option){
		if(!option instanceof Array){
			return;
		}
		init(option);
		if(reclaim.defaults._targets){
			start();			
		}
	}
	/*参数说明
	 * isLoop:是否循环回收垃圾
	 * _timer:循环回收垃圾事件
	 * _interval:循环回收垃圾的时间间隔，默认为10秒
	 * _targets:需要垃圾回收的对象
	 * degree:垃圾回收的级别，默认为最低级别0
	 * */
	reclaim.defaults = {
		isLoop:false,
		_timer:null,
		_interval:1000*30,
		_targets:null,
		degree:0//垃圾回收级别，0：只回收对象的属性为方法内未释放内存的对象；1：回收对象中所有属性所占的内存；2：回收整个对象
	}
})(reclaim);




















